// ~ Package Declaration
// ==================================================

package com.wms.data.dao.jdbc;

import com.wms.data.PaginateModel;
import com.wms.data.dao.Dao;
import com.wms.data.pojo.Pojo;

import java.io.Serializable;
import java.util.List;


// ~ Comments
// ==================================================

/**
 * 
 * JDBC dao interface.
 * 
 * <pre>
 * 歷史�?���?
 * 2009-5-12 Timothy
 * 	新建檔案
 * </pre>
 * 
 * @author <pre>
 * SD
 * 	Timothy
 * PG
 * 
 * UT
 * 
 * MA
 * </pre>
 * @version $Rev$
 * 
 *          <p/>
 *          $Id$
 * 
 */
public interface JdbcDao<P extends Pojo<PK>, PK extends Serializable> extends Dao<P, PK> {

	// ~ Static Fields
	// ==================================================

	// ~ Methods
	// ==================================================

	/**
	 * <pre>
	 * 2010-2-20 Timothy
	 * </pre>
	 * 
	 * @param pojo
	 * @return
	 */
	P findById(P pojo);

	/**
	 * <pre>
	 * 2010-2-20 Timothy
	 * Check exists pojo by id
	 * </pre>
	 * 
	 * @param pojo
	 * @return
	 */
	boolean exists(P pojo);

	/**
	 * <pre>
	 * 2010-2-20 Timothy 
	 * Check not exists pojo by id
	 * </pre>
	 * 
	 * @param pojo
	 * @return
	 */
	boolean notExists(P pojo);

	/**
	 * 
	 * �?pojo 中所有不为空的栏位当做查询条件，仅以 "=" 进行匹配.
	 * 
	 * <pre>
	 * 2010-3-5 Timothy
	 * </pre>
	 * 
	 * @param pojo
	 * @return
	 */
	List<P> findByPojoFields(P pojo);

	/**
	 * 
	 * �?pojo 中所有不为空的栏位当做查询条件，仅以 "=" 进行匹配.
	 * 
	 * <pre>
	 * 2010-3-5 Timothy
	 * </pre>
	 * 
	 * @param pojo
	 * @param paginateModel
	 * @return
	 */
	List<P> findByPojoFields(P pojo, PaginateModel paginateModel);

}
